using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;

using ClienteCaptura;

namespace ClienteCaptura.Core {

  public class Ejecutivo {

    private int id;
    private string nombre;
    private string primer_apellido;
    private string segundo_apellido;

    public int Id {
      get { return id; }
    }

    public string Nombre {
      get { return nombre; }
      set { nombre = value; }
    }

    public string PrimerApellido {
      get { return primer_apellido; }
      set { primer_apellido = value; }
    }

    public string SegundoApellido {
      get { return segundo_apellido; }
      set { segundo_apellido = value; }
    }

    public string NombreCompleto {
      get { return string.Empty; }
    }

    private Ejecutivo() {
    }

    public static Ejecutivo Autenticar(string usuario, string contrasenia) {
      throw new NotImplementedException();
    }

    public static List<Ejecutivo> FindAll() {
      string query = "SELECT * FROM ejecutivos WHERE (status_id = 1) AND (puesto_id = 4) ORDER BY nombre, primer_apellido";

      List<Ejecutivo> ejecutivos = new List<Ejecutivo>();
      
      SqlDataReader reader = DatabaseHelper.ExecuteReader(query);
      
      while (reader.Read()) {
        ejecutivos.Add(CreateFromReader(reader));
      }

      return ejecutivos;
    }
    
    private static Ejecutivo CreateFromReader(SqlDataReader reader) {
      Ejecutivo ejecutivo = new Ejecutivo();
      
      ejecutivo.id = reader.GetInt32(0);
      ejecutivo.nombre = reader.GetString(1);
      ejecutivo.primer_apellido = reader.GetString(2);
      if (!reader.IsDBNull(3)) ejecutivo.segundo_apellido = reader.GetString(3);
      
      return ejecutivo;
    }
  }
}
